package model.CRUDs;

import java.util.List;

import model.ControladorDeEstoque;
import model.DAO.ControladorDeEstoqueDAO;

import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.tool.hbm2ddl.SchemaExport;


public class CRUDControladorDeEstoque {
	
	private static AnnotationConfiguration cfg; 
	private static ControladorDeEstoqueDAO contrEstoqueDAO;
	private static SessionFactory factory;
	public  static CRUDControladorDeEstoque instance;
	 
	public static CRUDControladorDeEstoque getInstance(){
		if(instance == null){
			instance = new CRUDControladorDeEstoque();			
		}
		return instance;
	}
	
	static{
		cfg = new AnnotationConfiguration();
		cfg.addAnnotatedClass(ControladorDeEstoque.class);
		factory = cfg.buildSessionFactory();
		contrEstoqueDAO = new ControladorDeEstoqueDAO(factory.openSession());
	}
	
	public void geraTabelas(){
		SchemaExport se = new SchemaExport(cfg);
	    se.create(true, true);
	}
	
	public void salvaControladorDeEstoque(ControladorDeEstoque ce){
		contrEstoqueDAO.salvar(ce);
	}
	
	public void removeControladorDeEstoque(ControladorDeEstoque ce){
		contrEstoqueDAO.remove(ce);
	}
	
	public void atualizarControladorDeEstoque(ControladorDeEstoque ce) {
		contrEstoqueDAO.atualiza(ce);
	}
	
	public List<ControladorDeEstoque> getListaDeControladoresDeEstoque() {
		return contrEstoqueDAO.getlistaDeControladoresDeEstoque();
	}
	
	public ControladorDeEstoque getControladordeEstoque(String nome) {
		return contrEstoqueDAO.getControladorDeEstoque(nome);
	}
}
